import java.util.Arrays;

/**
 * @program: data_structures_algorithms
 * @description: 选择排序
 * @author: lld
 * @create: 2020/08/27 14:11
 **/
public class SelectSort {
    public static void main(String[] args) {
//        int[] array = {4, 2, -2, 1, 10, 8};
//        sort(array);
        //测试执行效率
        int[] bigArray1=new int[50000];
        for(int i=0;i<bigArray1.length;i++){
            bigArray1[i]=(int)(Math.random()*1000000);
        }
        long start = System.currentTimeMillis();
        sort(bigArray1);
        long end = System.currentTimeMillis();
        System.out.println("50000个数据排序时间(毫秒):"+(end-start));//1725
    }
    public static void sort(int[] array){
        for (int i = 0; i < array.length - 1; i++) {
            int minIndex = i;//假设最小值索引是0
            int min = array[i];//
            for (int j = i + 1; j < array.length; j++) {
                //这里不直接交换，防止频繁交换
                if (min > array[j]) {//(从小到大)遇到更小的数，就交换。(从大到小==>min < array[j])
                    min = array[j];
                    minIndex = j;
                }
            }
            if (minIndex != i) {//如果最小值索引不是原来的，两个数交换位置
                array[minIndex] = array[i];
                array[i] = min;
            }
//            System.out.println("第" + (i + 1) + "次排序："+Arrays.toString(array));
        }
    }
}
